Спринт 1/18 → Тема 6/13: Последовательности: продолжение → Урок 2/2
Кортеж: неизменяемый список
Кортеж (tuple) — ещё один тип последовательностей в Python. Кортеж очень похож на список, но, в отличие от списка, кортеж — это неизменяемая последовательность.
При литеральном объявлении кортежа его элементы записываются в круглых скобках.
PYTHON
Создание кортежей
Как и списки, кортежи можно создать несколькими способами: литерально или через функцию
tuple().Применим кортеж на практике.
Датчики фитнес-трекера передают в программный модуль пакеты, содержащие два значения: время запроса и количество шагов, пройденных пользователем к этому времени.
Чтобы данные были неизменны в ходе выполнения программы — их лучше передавать в кортеже:
PYTHON
В кортежи и в списки можно преобразовать толькоитерируемыеобъекты.
PYTHON
Преимущества кортежей
- Неизменяемость. Это основное отличие кортежей от списков; именно из этого свойства следуют другие преимущества.
- Меньший объём в памяти: при прочих равных кортежи занимают меньший объём в памяти, чем списки.
- Скорость: кортежи хешируются и хранятся в памяти иначе, чем списки, поэтому создание и повторное использование кортежей выполняется почти в три раза быстрее, чем при работе со списками.
- Безопасность: кортеж защищён от изменений. Это даёт преимущество в тех случаях, когда исходная коллекция элементов не должна измениться в ходе выполнения программы.
- Использование в других структурах данных: кортежи можно применять в структурах данных, от которых Python требует неизменяемых значений, например кортеж можно использовать в качестве ключа словаря.
Встроенные функции
Упаковка
Упаковкой называют специальный синтаксис для объявления кортежа.
PYTHON
Оба выражения дадут одинаковый результат: значением переменной будет кортеж. Второй способ — это и есть упаковка значений в кортеж.
Лайфхак: в кортеж можно упаковать и один элемент. Выражение
tpl = 15000 объявит переменную типа int, а чтобы создать кортеж с этим значением — после значения нужно поставить запятую:PYTHON
Распаковка кортежей
Если есть упаковка — логично предположить, что есть и распаковка, как и у списков. Смысл этой операции — присвоить значения элементов кортежа переменным: работать с именованными переменными гораздо удобнее, чем получать значение по индексу из последовательности.
PYTHON
Обращение к элементу кортежа
Получить значение элемента кортежа можно так же, как в других последовательностях — по индексу. Индексация, как всегда, начинается с нуля.
Сортировка
Для сортировки кортежей есть функция
sorted(). Разница между функцией
sorted() и методом списка sort() состоит в том, чтоlist.sortизменяет исходный список и возвращаетNone;sorted()принимает любую последовательность и возвращает новый объект — отсортированный список, состоящий из элементов исходной последовательности. Ведь сортировка — это изменение последовательности элементов, а изменять исходный кортеж нельзя.
PYTHON
Функция
sorted() возвращает список, хотя в неё передавался кортеж.Перед тем, как приступить к задачам, скачайте шпаргалку. В ней собрана основная информация из уроков о списках и кортежах.
Отредактируйте код, чтобы результатом выполнения был новый отсортированный кортеж.
КодPYTHON
Удаление
Главное отличие кортежей — неизменяемость: в кортеже нельзя изменять, добавлять или удалять элементы. Но можно удалить весь кортеж — для этого есть оператор
del().PYTHON
Из кортежа и списка создайте список кортежей.
Программа получает:
- кортеж
daysс перечнем дней недели; - список
steps, в котором перечислено количество шагов, пройденных пользователем в соответствующий день; например,steps[0]— это количество шагов за понедельник.
Программа должна вернуть список кортежей, каждый из которых содержит два элемента: название дня недели и количество шагов за этот день.
КодPYTHON